C语言网络编程Socket实战
📚 共计 30 章节
01
网络基础与Socket概述
TCP/IP协议栈、IP地址与端口、Socket概念、C/S与B/S架构
基础
概念
02
Socket API入门
socket()、bind()、listen()、accept()、connect()函数详解
API
函数
03
TCP服务端实现
创建服务端socket、绑定地址、监听、接受连接、收发数据
TCP
服务端
04
TCP客户端实现
创建客户端socket、连接服务端、收发数据、关闭连接
TCP
客户端
05
TCP回射服务器
实现一个简单的echo服务器,客户端发送什么就返回什么
echo
回射
06
多进程并发服务器
使用fork()创建子进程处理多客户端连接
多进程
并发
07
多线程并发服务器
使用pthread_create()创建线程处理多客户端连接
多线程
并发
08
select I/O复用
使用select()同时监控多个socket,实现单线程并发
I/O复用
select
09
poll I/O复用
使用poll()替代select(),突破文件描述符上限
I/O复用
poll
10
epoll I/O复用
Linux高性能I/O复用模型epoll的使用与原理
epoll
高性能
11
UDP通信基础
UDP服务端与客户端实现,sendto()与recvfrom()
UDP
数据报
12
UDP广播与组播
广播地址、组播地址、setsockopt()设置
广播
组播
13
原始socket与数据包捕获
创建原始socket,解析IP/TCP/UDP头部
原始socket
抓包
14
Socket选项
setsockopt()与getsockopt(),SO_REUSEADDR等常用选项
选项
配置
15
非阻塞socket
fcntl()设置非阻塞模式,非阻塞connect()与accept()
非阻塞
fcntl
16
带外数据与紧急模式
TCP紧急指针、SIGURG信号、MSG_OOB标志
带外数据
紧急
17
域名解析
gethostbyname()、getaddrinfo()、DNS解析原理
DNS
解析
18
Unix域socket
AF_UNIX本地通信,流式与数据报模式
本地通信
AF_UNIX
19
信号驱动I/O
SIGIO信号、fcntl()设置异步I/O
信号
异步I/O
20
超时控制
setsockopt()设置收发超时、alarm()信号超时、select()超时
超时
控制
21
心跳检测与保活
TCP keepalive机制、应用层心跳包设计
心跳
保活
22
粘包与拆包
TCP粘包原因分析、自定义协议解决粘包
粘包
拆包
23
自定义应用层协议
设计二进制协议、文本协议、TLV格式
协议
TLV
24
HTTP协议解析
实现简单的HTTP客户端,解析请求与响应
HTTP
客户端
25
WebSocket协议
WebSocket握手、数据帧格式、实现简单聊天室
WebSocket
聊天室
26
SSL/TLS安全通信
OpenSSL库使用、证书验证、加密传输
SSL
TLS
27
高性能网络框架Reactor
Reactor模式原理、事件驱动、libevent简介
Reactor
libevent
28
高性能网络框架Proactor
Proactor模式与异步I/O、IOCP简介
Proactor
IOCP
29
网络调试与抓包
tcpdump使用、Wireshark分析、常见问题排查
调试
Wireshark
30
综合实战:简易HTTP服务器/聊天室
综合运用所学知识,实现一个简易HTTP服务器或聊天室
实战
项目